from typing_extensions import TypedDict, List, Optional
from pydantic import BaseModel, Field
import pandas as pd
from langchain_core.messages import BaseMessage

class AgentState(TypedDict):
    # 用户原始输入
    user_input: str

    # 由LLM解析出的信息
    intent: Optional[str]  # e.g., "query_win_rate", "request_recommendation"
    mentioned_champions: List[str]  # 识别出的英雄英文名列表
    user_constraints: List[str]    # e.g., ["easy_to_play"]

    # 工作流中间数据
    raw_champion_data: Optional[pd.DataFrame]  # 从CSV加载的原始数据
    filtered_champion_data: Optional[pd.DataFrame] # 过滤后的数据

    # 最终输出
    response: Optional[str]
    # 对话历史
    message_history: List[BaseMessage]  # 存储完整的对话历史